import { DeepseekService, DeepseekModel, ChatRole } from '../deepseek.service';

/**
 * Deepseek API 服务使用示例
 */
async function deepseekExample() {
  console.log('开始运行 Deepseek API 服务示例...');

  // 检查环境变量中是否设置了API密钥
  if (!process.env.DEEPSEEK_API_KEY) {
    console.error('错误: 未找到 DEEPSEEK_API_KEY 环境变量');
    console.error('请在 .env 文件中设置 DEEPSEEK_API_KEY=你的Deepseek_API密钥');
    return;
  }
  
  try {
    // 创建 DeepseekService 实例
    const deepseekService = new DeepseekService();
    
    // 示例1: 简单对话
    console.log('\n示例1: 简单对话');
    const response = await deepseekService.chat([
      { role: ChatRole.SYSTEM, content: '你是一个专业的量化交易助手。' },
      { role: ChatRole.USER, content: '请简要介绍比特币的价格走势分析方法。' }
    ]);
    
    console.log('AI回复:\n', response);
    
    // 示例2: 使用辅助方法创建消息
    console.log('\n示例2: 使用辅助方法创建消息');
    const response2 = await deepseekService.chat([
      DeepseekService.systemMessage('你是一个专业的量化交易助手。'),
      DeepseekService.userMessage('请简单解释什么是趋势交易策略。')
    ]);
    
    console.log('AI回复:\n', response2);
    
    // 示例3: 使用流式输出
    console.log('\n示例3: 使用流式输出');
    console.log('AI正在回复:');
    
    // 准备一个输出函数
    const streamOutput = (content: string, done: boolean) => {
      // 清除当前行并输出新内容
      process.stdout.write('\r\x1b[K');
      process.stdout.write(content.substring(0, 80) + (content.length > 80 ? '...' : ''));
      
      if (done) {
        console.log('\n\n流式输出完成!');
      }
    };
    
    await deepseekService.chatStream(
      [
        DeepseekService.systemMessage('你是一个交易策略专家。'),
        DeepseekService.userMessage('给我一个简单的量化交易策略示例。')
      ],
      streamOutput
    );
    
    // 示例4: 使用 reasoner 模型
    console.log('\n示例4: 使用 reasoner 模型');
    const response4 = await deepseekService.chat(
      [
        DeepseekService.systemMessage('你是一个专业的金融分析师。'),
        DeepseekService.userMessage('分析一下ETH和BTC的相关性。')
      ],
      DeepseekModel.REASONER,
      { temperature: 0.2 }
    );
    
    console.log('Reasoner模型回复:\n', response4);
    
  } catch (error: any) {
    console.error('DeepseekService 示例运行失败:', error.message);
  }
  
  console.log('\nDeepseek API 服务示例运行完成');
}

// 如果直接运行此文件，则执行示例
if (require.main === module) {
  deepseekExample().catch(console.error);
}

export { deepseekExample }; 